
from django.db import models
from utils.models import BaseModel
from django.conf import settings
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer,BadData


class OAuthQQUser(BaseModel):
    """
    QQ登录用户数据
    """
    user = models.ForeignKey('users.User', on_delete=models.CASCADE, verbose_name='用户')
    openid = models.CharField(max_length=64, verbose_name='openid', db_index=True)

    class Meta:
        db_table = 'tb_oauth_qq'
        verbose_name = 'QQ登录用户数据'
        verbose_name_plural = verbose_name

    @staticmethod
    def generic_token_by_openid(openid):

        # 创建对象
        serializer = Serializer(settings.SECRET_KEY,3600)
        # 使用serializer对openid进行加密处理
        access_token = serializer.dumps({"openid":openid})

        return access_token.decode()

    @staticmethod
    def get_openid_by_token(access_token):

        serializer = Serializer(settings.SECRET_KEY, 3600)
        try:
            result = serializer.loads(access_token)
        except BadData:
            return None
        else:
            return result.get("openid")

